The present disclosure relates generally to information handling systems, and more particularly to performing socket splicing in a remote information handling system such that a proxy information handling system may be removed from data communications between a plurality of other information handling systems.
As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more computer systems, data storage systems, and networking systems.
In information handling systems networks, proxy information handling systems such as, for example, proxy servers, are sometimes provided as intermediaries for requests from client devices seeking resources from resource servers. In such systems, the client devices may connect to the proxy server, request a service provided by a resource server, and the proxy server may act as a gateway between the resource server and the client to provide the service. For example, a client device may request a file available from a resource server, and the proxy server may forward the request to the resource server and maintain a relay between a first socket on the proxy server that is coupled to client device and a second socket on the proxy server that is coupled to the resource server. When the resource server responds with the requested service (e.g., the file), a proxy application in the proxy server will receive the responses from the resource server through the second socket, copy the responses to a memory buffer, and then forward the responses to the client device through the first socket. Thus, the use of the proxy server requires all responses from the resource server to pass through the proxy server (as well as through a router multiple times when the router connects the proxy server to each of the resource server and the client device) and be processed by the proxy application as discussed above, which introduces inefficiencies in the data communication path between the client device and the resource server while also using up resources in the proxy server.
Conventional attempts to remedy inefficiencies associated with proxy servers include the use of socket splicing. Continuing with the example above, the use of a conventional socket splicing system would allow for the association or “splicing” of the first socket on the proxy server that is coupled to client device with the second socket on the proxy server that is coupled to the resource server, and results in the copying of responses received at the second socket directly to the first socket by the proxy kernel in order to free up the proxy application in the proxy server (e.g., to receive requests from other client devices). Such conventional solutions offload the serving of the resource server response from the proxy application to the proxy kernel, but still utilize proxy server resources while doing nothing to address the inefficiencies resulting from the need to route all of the data communication through the proxy server.
Accordingly, it would be desirable to provide an improved proxy server system.